A reduced boot time increases the attractiveness of a given system as compared to competing systems in the marketplace. Accordingly, boot time reduction has been a focus of developmental efforts among makers and marketers of computer products.
A factor in the duration of the boot-up process is the execution of the known basic input/output system (BIOS) program which is an integral part of most computer systems. The BIOS program is usually triggered by a system power-on or reset, and performs a number of initialization routines, including memory and disk initialization, to prepare the system for normal usage.
Typical BIOS code must execute serially early in the boot process because there is no memory available for a stack and temporary variable storage. Thus, BIOS code is typically somewhat lengthy and convoluted. If a stack and temporary variable storage were available, it would be possible for the BIOS to execute subroutines, thereby operating in a “multi-threading” fashion in which separate subroutines execute in parallel. This would speed boot-up by allowing, for example, disk initialization and memory initialization to be started and executed almost at the same time. Further, the BIOS program could be coded in high-level languages as opposed to the assembly language which is typical of current BIOS programs.
Moreover, if a stack and temporary storage were available to the BIOS routine, the CPU's main cache could be used as a true code cache (rather than for stack area), resulting in improved boot times.
Notwithstanding the advantages that could be realized by providing RAM to the BIOS program for a stack and temporary variable storage, practical aspects of chip production place limits on the amount of RAM available. For example, it is estimated that the amount of RAM needed for a stack and other temporary storage is in the 1 K-byte range. Adding this much RAM to an existing chipset would be very expensive, especially if it was only used during system boot-up.
In view of the foregoing considerations, there is a need to reduce boot time while making efficient use of available RAM.